matlab求解常微分方程 |
您所在的位置:网站首页 › matlab 次方 › matlab求解常微分方程 |
一、概念 微分方程:含导数或微分的方程。 解:满足微分方程的函数。 特解/通解:特解指的是满足微分方程的某一个解;通解指的是满足微分方程的一组解。 阶:微分方程中导数或微分的最高阶数。 线性/非线性:(几何意义:叠加原理)方程中的函数和它的各阶导数都是一次方为线性微分方程,否则为非线性。例: y'=sin(x)*y 线性 y'=y^2 非线性 齐次/非齐次:(代数意义:次数)齐次微分方程中不含常数项,也不含仅由x的各种运算组合构成的项(比如4xx,sinx等),否则为非齐次。 常微分/偏微分:未知函数是一元函数的,叫常微分方程;未知函数是多元函数的叫做偏微分方程。 初值问题和边值问题:附加条件中未知函数及其导数的独立变量取值相同,则为初值问题;附加条件中未知函数及其导数的独立变量取值不同,则为边界值问题。例: y(0)=1,y'(0)=2 初值问题 y(0)=1,y'(1)=2 边值问题 二、解法 在matlab中解微分方程,方法有两种: 解析解方法:严格按照公式逻辑推导得到的,具有基本的函数形式。 数值解方法:采用某种计算方法,在特定的条件下得到的一个近似数值结果,如有限元法,数值逼近法,插值法等等。 解析解方法可回顾《高等数学》中相关公式。 数值解方法可回顾《数值分析》中相关解法。 matlab微分方程求解 一、解析解 1.1 解析解的存在 由Abel-Ruffini定理,四次及以下的多项式代数方程是能求出根的解析解的,即低阶常系数线性微分方程有一般意义下的解析解。 非线性微分方程只能用数值解法求解,即使看起来很简单的非线性微分方程也是没有解析解的,只有极特殊的非线性微分方程解析可解。 1.2 解析解的解法 利用dsolve函数 S = dsolve(eqn) S = dsolve(eqn,cond) S = dsolve(___,Name,Value) [y1,...,yN] = dsolve(___) 1.3 实例 例1.1 输入信号为u(t)=exp(-5*t)*cos(2*t+1)+5,求微分方程diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y=5*diff(u,t,2)+4*diff(u,t)+2*u的通解。初值条件:y(0)=3,y1(0)=2,y2(0)=0,y3(0)=0,求方程的特解。(约定y1代表一阶导数,以此类推) 代码如下: % y=dsolve(f1,f2,...,fm) 默认自变量为t % y=dsolve(f1,f2,...,fm,'x') 指明自变量 % f可由字符串表示也可由符号表达式表示 %用字符串表达式,新版本会被移除 syms t; u=exp(-5*t)*cos(2*t+1)+5; uu=5*diff(u,t,2)+4*diff(u,t)+2*u; y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y=',char(uu)]); %求解 y=simplify(y) %化简 %用符号表达式,推荐 syms y(t); eqn=diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y==uu; y=dsolve(eqn); y=simplify(y) %检验 diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y-uu %求特解并绘图 syms y(t); eqn=diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y==uu; y1=diff(y);y2=diff(y,2);y3=diff(y,3);y4=diff(y,4); % 需要引入中间变量 % 用字符串求解的情况,不需要引入中间变量。'y(0)=3','Dy(0)=2','D2y(0)=0'... cond=[y(0)==3,y1(0)==2,y2(0)==0,y3(0)==0]; z=dsolve(eqn,cond); z=simplify(z) ezplot(z,[0,5]) fplot(z,[0,5]) % ezplot(fun,[xmin,xmax])绘制fun(x)在以下域上的图形:xmin |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |